﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
using Sistema.Dao.Financeiro;
using Sistema.Modelo.Financeiro;

namespace Sistema.Visao.Financeiro
{
    public partial class CategoriaCartao : Form
    {
        public CategoriaCartao()
        {
            InitializeComponent();
        }

        //Variaveis Globais 
        Boolean CaAl = true;//Variavel para contro de Cadastro e Alteracao se for true sera para cadastro e false para alteracao
        modCategoriaCartao mod = new modCategoriaCartao();// variavel da classe modelo
        daoCategoriaCartao dao = new daoCategoriaCartao();// variavel da classe dao

        private void AtualizarDados()//Metodo para pegar os datos da grid para o txt
        {
            int linha = dataGridView1.CurrentRow.Index;
            textBox1.Text = dataGridView1.Rows[linha].Cells[2].Value.ToString();

            if (dataGridView1.Rows[linha].Cells[1].Value.ToString() == "1")
            {
                comboBox1.Text = "CREDITO";
            }
            else if (dataGridView1.Rows[linha].Cells[1].Value.ToString() == "2")
            {
                comboBox1.Text = "DEBITO";
            }
            else
            {
                comboBox1.Text = dataGridView1.Rows[linha].Cells[1].Value.ToString();
            }

        }
        private void AtualizarGrid(int Selecao, String Busca)//MEtodo para carregar o data Grid atraves de coneção com o banco utilizando a camada dao
        {
            dao.SelecionarBanco(Busca, Selecao);
            SqlDataAdapter i = dao.getSelect();
            DataTable da = new DataTable();
            i.Fill(da);

            dataGridView1.DataSource = da;
            dataGridView1.Columns[0].Visible = false;//colocando os valores da coluna codigo em invisivel ao usuario
            dataGridView1.Columns[1].Visible = false;
            dataGridView1.Columns[3].Visible = false;
            dataGridView1.Columns[2].HeaderText = "Descrição";

        }
        private void CadAlt()//metodo para realizar cadastros e alteracoes
        {
            try //metado de verificacao de erros exepicionais
            {

                if (CaAl == true)//cadastro
                {
                    if (comboBox1.Text == "CREDITO")
                    {
                        mod.Categoria_Cartao_Descricao = textBox1.Text; // variavel modelo recebendo valor
                        mod.Credito_Debito_Codigo = 1;
                        dao.ExecutarProcedimentoBanco(mod, 1); // passando os valores da camanda modelo para a dao para poder realizar a execucao no banco 
                        MessageBox.Show(Convert.ToString(dao.getMensagem()));// retornando a mensagem da operacao no banco de dados
                    }
                    else if (comboBox1.Text == "DEBITO")
                    {
                        mod.Categoria_Cartao_Descricao = textBox1.Text; // variavel modelo recebendo valor
                        mod.Credito_Debito_Codigo = 2;
                        dao.ExecutarProcedimentoBanco(mod, 1); // passando os valores da camanda modelo para a dao para poder realizar a execucao no banco 
                        MessageBox.Show(Convert.ToString(dao.getMensagem()));// retornando a mensagem da operacao no banco de dados
                    }
                    else
                    {
                        MessageBox.Show("Escolha um Tipo!");
                    }

                }
                else
                {//alterar
                    int linha = dataGridView1.CurrentRow.Index;
                    if (comboBox1.Text == "CREDITO")
                    {
                        mod.Categoria_Cartao_Codigo = Convert.ToInt16(dataGridView1.Rows[linha].Cells[0].Value.ToString());
                        mod.Categoria_Cartao_Descricao = textBox1.Text; // variavel modelo recebendo valor
                        mod.Credito_Debito_Codigo = 1;
                        dao.ExecutarProcedimentoBanco(mod, 2); // passando os valores da camanda modelo para a dao para poder realizar a execucao no banco 
                        MessageBox.Show(Convert.ToString(dao.getMensagem()));// retornando a mensagem da operacao no banco de dados
                    }
                    else if (comboBox1.Text == "DEBITO")
                    {
                        mod.Categoria_Cartao_Codigo = Convert.ToInt16(dataGridView1.Rows[linha].Cells[0].Value.ToString());
                        mod.Categoria_Cartao_Descricao = textBox1.Text; // variavel modelo recebendo valor
                        mod.Credito_Debito_Codigo = 2;
                        dao.ExecutarProcedimentoBanco(mod, 2); // passando os valores da camanda modelo para a dao para poder realizar a execucao no banco 
                        MessageBox.Show(Convert.ToString(dao.getMensagem()));// retornando a mensagem da operacao no banco de dados
                    }
                    else
                    {
                        MessageBox.Show("Escolha um Tipo!");
                    }
                }
                //retornando o fromulario ao estado inicial
                tsbInserir.Enabled = true;
                tsbAlterar.Enabled = true;
                tsbExcluir.Enabled = true;
                dataGridView1.Enabled = true;
                tsbBusca.Enabled = true;

                comboBox1.Enabled = false;
                tsbCancelar.Enabled = false;
                tsbSalvar.Enabled = false;
                textBox1.Enabled = false;
                AtualizarGrid(0, "");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());//retornar mensagem dee erro inisperado e nao tratado
            }
        }
        private void splitContainer1_Panel1_Paint(object sender, PaintEventArgs e)
        {

        }

        private void CategoriaCartao_Load(object sender, EventArgs e)
        {
            AtualizarGrid(0, "");//camando o metado para atualizando valores no data grid
        
        }

        private void tsbInserir_Click(object sender, EventArgs e)
        {
            tsbInserir.Enabled = false;
            tsbAlterar.Enabled = false;
            tsbExcluir.Enabled = false;
            tsbBusca.Enabled = false;
            dataGridView1.Enabled = false;

            comboBox1.Enabled = true;
            tsbCancelar.Enabled = true;
            tsbSalvar.Enabled = true;
            textBox1.Enabled = true;
            textBox1.Text = "";
            CaAl = true;
        
        }

        private void tsbExcluir_Click(object sender, EventArgs e)
        {
            int linha = dataGridView1.CurrentRow.Index;
            mod.Categoria_Cartao_Codigo = Convert.ToInt16(dataGridView1.Rows[linha].Cells[0].Value.ToString());
            mod.Categoria_Cartao_Descricao = dataGridView1.Rows[linha].Cells[2].Value.ToString();
            dao.ExecutarProcedimentoBanco(mod, 3);
            MessageBox.Show(Convert.ToString(dao.getMensagem()));
            AtualizarGrid(0, "");
        
        }

        private void tsbAlterar_Click(object sender, EventArgs e)
        {
            tsbInserir.Enabled = false;
            tsbAlterar.Enabled = false;
            tsbExcluir.Enabled = false;
            tsbBusca.Enabled = false;
            dataGridView1.Enabled = false;

            comboBox1.Enabled = true;
            tsbCancelar.Enabled = true;
            tsbSalvar.Enabled = true;
            textBox1.Enabled = true;
            AtualizarDados();
            CaAl = false;
        
        }

        private void tsbBusca_Click(object sender, EventArgs e)
        {
            AtualizarGrid(1, tsbTBusca.Text);
        
        }

        private void tsbCancelar_Click(object sender, EventArgs e)
        {
            tsbInserir.Enabled = true;
            tsbAlterar.Enabled = true;
            tsbExcluir.Enabled = true;
            tsbBusca.Enabled = true;
            dataGridView1.Enabled = true;

            comboBox1.Enabled = false;
            tsbCancelar.Enabled = false;
            tsbSalvar.Enabled = false;
            textBox1.Enabled = false;
        
        }

        private void tsbSalvar_Click(object sender, EventArgs e)
        {
            CadAlt();//camado do metodo cadastrar
        
        }
    }
}
